package ini

import (
	"context"
	"fmt"
	"github.com/danfwing/sd-project/pkg/config"
	"github.com/redis/go-redis/v9"
)

// InitRedis 初始化Redis连接
func InitRedis(c *config.Config, ctx context.Context) (*redis.Client, error) {
	cfg := c.Redis
	GRedis := redis.NewClient(&redis.Options{
		Addr:         fmt.Sprintf("%s:%s", cfg.Host, cfg.Port),
		Password:     cfg.Password,
		DB:           cfg.DB,
		PoolSize:     cfg.PoolSize,
		MinIdleConns: cfg.MinIdleConns,
	})
	if GRedis == nil {
		return nil, fmt.Errorf("redis connection error: %v", "redis连接为空")
	}

	// 测试连接
	if err := GRedis.Ping(ctx).Err(); err != nil {
		return nil, fmt.Errorf("redis connection error: %v", err)
	}

	return GRedis, nil
}
